home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
MEDICAL
/
2608A.ZIP
/
GP.ZIP
/
RECALLS.SRC
< prev
next >
Wrap
Text File
|
1990-11-03
|
18KB
|
549 lines
;\|
;RECALLS.SRC Translated from RECALLS.EDT by Roger Mathew's EDT2SRC Ver 4.11
;START 01:59:01 PM 9/ 4/90 |
RECALLSX:
define(Z30|A|30||)
define(YES.NO|A|1||)
define(NUM_N|N|2||)
define(NUM|A|2||)
define(DATE_A|A|8||)
define(DATE_B|A|10||)
define(TO_DATE|S|8||)
define(SENT_DATE|S|8||)
define(CHK_DATE|S|8||)
define(PUNC2|N|2||)
define(CH_NAME|A|15||)
define(HIS|A|3||)
define(CLIN_DAY|A|25||)
define(CLIN_TIME|A|10||)
define(CNTR|N|2||)
define(FLAG|A|1||)
define(AMOUNTX|N|4||)
define(S10|A|10||)
define(DATECOD|S|8||)
define(CODER|A|5||)
define(C30|A|30||)
define(TM|A|27||4)
define(A30|A|30||)
define(CHOICE|N|1||)
define(TDND|S|8||)
define(DATERP|S|8||)
define(B30|A|30||)
define(S1|A|1||)
define(TD|S|8||)
define(A8|A|8||)
define(B8|A|8||)
define(YES.NO|A|1||)
define(N5|N|5||)
define(D1|A|1||)
define(NY|A|1||)
define(CODEX1|S|8||)
define(CTR|N|2||)
define(DATEN|N|2||)
define(DATEX|S|8||)
define(ARRAY1|A|30||3)
define(ARRAY2|A|22||3)
define(ARRAY3|A|22||3)
define(ARRAY4|A|4||3)
define(ARRAY5|S|8||3)
define(TIT|A|4||)
define(PATIENT1A|A|30||)
define(PUNC1|N|2||)
define(N.2.0.P|N|2||)
define(P.2.0.1|N|2||)
define(P.2.0.2|N|2||)
define(PATIENT2|A|30||)
define(P.2.0.3|N|2||)
define(RECTYPE1|A|4||)
define(RECTYPE2|A|4||)
define(PATIENT1|A|30||)
define(DOB1|D|10||)
define(DOB2|D|10||)
STARTREC:
mount(NOTE|S)
pmsg(""|1|1|Y|N|S|)
open(PATIENT||0|FILE_LOCK)
open(GPSETUP||0|)
open(RECALLS||0|FILE_LOCK)
D1 = ("")
date(TD|G)
YES.NO = ("")
DATEX = (0)
CODEX1 = (0)
NY = ("")
trap(I|G|PRINTSTOP)
trap(S|I)
trap(D|I)
trap(F|I)
trap(R|I)
trap(B|I)
trap(G|I)
trap(H|S|HELP)
trap(M|I)
trap(N|I)
trap(Q|G|MENU)
trap(J|G|LASTSEEN)
mount(RECALLS|S)
enter(RECTYPE1||||Y|Y|N|||N)
enter(RECTYPE2||||Y|Y|N|||N)
enter(CTR|"123456789"|||N|Y|N|||N)
enter(CODEX1|||RECALLSX|N|Y|N|||N)
DATEXX:
NY = ("")
enter(YES.NO|"YN"|||Y|Y|N|||N)
CODEX1:
gosub MOUNTRECAL
RECSTART:
COD.PAT.NAME = ("A")
find(G|COD.PAT.NAME|EXIT|N)
RECTEST:
if COD[CTR] = ("HYS") goto NEXTRECALL
if COD[CTR] = ("VIR") goto NEXTRECALL
if COD[CTR] = ("REF") goto NEXTRECALL
if COD[CTR] = ("MOV") goto NEXTRECALL
if RECTYPE1 <> ("") then if RECTYPE1 > (COD[CTR]) goto NEXTRECALL
if RECTYPE2 <> ("") then if RECTYPE2 < (COD[CTR]) goto NEXTRECALL
if COD.D[CTR] > (CODEX1) goto NEXTRECALL
if COD.D[CTR] = (0) goto NEXTRECALL
RECORD.NUMBER = (COD.REF)
DATECOD = (COD.D[CTR])
CODER = (COD[CTR])
find(M|RECORD.NUMBER|EXIT|)
DATERP = (COD.D[CTR])
if NY = ("") do
{
gosub PRINTRECAL
}
else
{
gosub RECLABPRIN
}
NEXTRECALL:
find(N|RECALLS|EXITX|)
goto RECTEST
MOUNTRECAL:
mount(RPLABELS|R|P)
pchr(P|10)
pchr(P|11)
pchr(P|4)
pchr(P|1)
pset(132|66|60)
trap(I|G|PRINTSTOP)
trap(P|S|RECHEAD)
AMOUNTX = (0)
gosub RECHEAD
ret
PRINTRECAL:
pfmt(18|||N|N|)
AMOUNTX = (AMOUNTX+1)
DATECOD = (0)
CODER = ("")
ret
RECHEAD:
pfmt(16|||N|N|)
pfmt(17|||N|N|)
ret
RECALLS:
trap(P|D)
ptof
if D1 = ("X") then goto RECALLSX
if YES.NO = ("Y") do
{
gosub RECLABS
}
else
{
goto RECALLSX
}
goto RECSTART
TOPOF:
ptof
ret
RECLABS:
NY = ("X")
trap(P|D)
trap(I|S|PRINTSTOP)
pchr(P|10)
pchr(P|12)
pchr(P|4)
mount(RPLABELS|R|P)
pset(130|8|8)
pchr(P|1)
D1 = ("X")
ret
PRINT_LAB:
pfmt(1|||N|N|)
pblnk(1)
pfmt(2|||N|N|)
pblnk(1)
pfmt(3|||N|N|)
pblnk(1)
pfmt(5|||N|N|)
pblnk(1)
CNTR = (0)
if FLAG = ("X") goto EXIT
gosub CL_ARRAY
ret
CL_ARRAY:
clrmem(ARRAY1|3)
clrmem(ARRAY2|3)
clrmem(ARRAY3|3)
clrmem(ARRAY4|3)
clrmem(ARRAY5|3)
ret
RECLABPRIN:
gosub SEXIST
gosub NEWX
NY = ("X")
DATECOD = (0)
CODER = ("")
CNTR = (CNTR+1)
ARRAY1[CNTR] = (Z30)
ARRAY2[CNTR] = (ADDRESS1)
ARRAY3[CNTR] = (AREA)
ARRAY4[CNTR] = (COD[CTR])
ARRAY5[CNTR] = (COD.D[CTR])
if CNTR = (3) gosub PRINT_LAB
ret
EXITX:
if NY <> ("") do
{
FLAG = ("X")
gosub PRINT_LAB
}
goto RECALLS
REPONLY:
run("REPONLY")
SEXIST:
if SEX = ("M") then TIT = ("Mr.")
if SEX = ("F") do
{
if MARITAL.STATUS = ("M") do
{
TIT = ("Mrs.")
}
else
{
TIT = ("Ms.")
}
}
if SEX = ("") then TIT = ("Ms.")
trim(TIT|T)
ret
NEWX:
NY = (" ")
PATIENT1A = (PATIENT.NAME)
trim(PATIENT1A|T)
PUNC1 =loc(","|PATIENT1A|1||27)
N.2.0.P =siz(A|PATIENT.NAME)
P.2.0.1 = (PUNC1-1)
PATIENT2 =mid(PATIENT.NAME|1|P.2.0.1|)
P.2.0.2 = (PUNC1+2)
P.2.0.3 = (N.2.0.P-P.2.0.2+1)
PATIENT1 =mid(PATIENT1A|P.2.0.2|P.2.0.3|)
trim(PATIENT1|T)
trim(PATIENT2|T)
Z30 = (TIT+PATIENT1+NY+PATIENT2)
ret
CLEARALL:
clr(PATIENT|B)
clr(RECALLS|B)
S1 = ("")
DATEX = (0)
YES.NO = ("")
ret
EXIT:
run("recmenu")
EXIT1:
run("recmenu")
PRINTSTOP:
pon(S)
clrlne(1|25)
pmsg("CONTINUE ? (Y/N):"|30|12|N|N|S|)
enter(YES.NO|"YN"||PRINTSTOP|Y|Y|N|48|12|N)
if YES.NO <> ("Y") then run("recmenu")
pon(P)
ret
MENU:
TM[1] = (" 1 - EXIT 01011")
menu(1|20|2|23|0|TM|CHOICE|1|22|MENU||"-------RECALLS--------"|N)
on(CHOICE|G|EXIT1|MENU)
TRACE:
break
ret
FILE_LOCK:
pmsg("FILE PATIENT AND/OR RECALLS IS IN USE - EXIT"|20|24|Y|N|S|)
clrlne(1|24)
run("recmenu")
HELP:
saves(1)
window(1|23|22|78)
pmsg(" SMEAR RECALLS"|1|1|N|Y|S|)
pmsg(" ============="|1|2|N|Y|S|)
pmsg("1.USE UPDATE PROGRAM AND MAKE SURE ALL WOMEN BETWEEN 33 AND 65 ARE ENTERED"|1|3|N|Y|S|)
pmsg("2.ALL THESE WOMEN MUST HAVE A RECALL DATE."|1|4|N|Y|S|)
pmsg("3.RUN REPORT ONLY TO GET LATEST UPDATE ON TOTAL AT-RISK GROUP"|1|5|N|Y|S|)
pmsg("4.RECALL EVERY MONTH ON THE 16th + A DAY OR TWO"|1|6|N|Y||)
pmsg("5.CHECK OFF AGAINST RECALL LIST. ALL NON-ATTENDERS WILL BE ASKED AGAIN"|1|7|N|Y|S|)
pmsg("6.NON-ATTENDERS WILL BE THOSE WHO ARE MORE THAN ONE MONTH BEHIND"|1|8|N|Y||)
pmsg(""|1|9|N|Y|S|)
pmsg(" CODES"|1|10|N|Y|S|)
pmsg(" ====="|1|11|N|Y|S|)
pmsg("CODE 1 = SMEARS"|1|12|N|Y|S|)
pmsg("CODE 2 = CONTRACEPTION"|1|13|N|Y|S|)
pmsg("CODE 3 = IMMUNISATION"|1|14|N|Y|S|)
pmsg("CODE 4 = DIABETES"|1|15|N|Y|S|)
pmsg("CODE 5 = EPILEPSY"|1|16|N|Y|S|)
pmsg("CODE 6 = THYROID"|1|17|N|Y|S|)
pmsg("CODE 7 = ANGINA AND HEART DISEASE"|1|18|N|Y|S|)
pmsg("CODE 8 = ASTHMA"|1|19|N|Y|S|)
pmsg("CODE 9 = BP"|1|20|N|Y|S|)
pmsg(""|1|21|Y|N|S|)
redsp(1)
ret
LASTSEEN:
trap(I|S|PRINTSTOP)
trap(J|G|STARTREC)
mount(LABS|S)
enter(TO_DATE||||N|Y|N|||N)
DOB1 = (TO_DATE)
DOB2 = (TO_DATE)
DATE_A = (""+TO_DATE)
NUM =mid(DATE_A|7|2|)
NUM_N = (NUM)
NUM_N = (NUM_N-3)
NUM = (NUM_N)
mid(DATE_A|7|2|NUM|)
CHK_DATE = (DATE_A)
SENT_DATE = (TO_DATE)
DATE_B = (""+DOB1)
NUM =mid(DATE_B|9|2|)
NUM_N = (NUM)
NUM_N = (NUM_N-75)
NUM = (NUM_N)
mid(DATE_B|9|2|NUM|)
DOB1 = (DATE_B)
DATE_B = (""+DOB2)
NUM =mid(DATE_B|9|2|)
NUM_N = (NUM)
NUM_N = (NUM_N-16)
NUM = (NUM_N)
mid(DATE_B|9|2|NUM|)
DOB2 = (DATE_B)
enter(YES.NO|"YN"|||Y|Y|N|||N)
if YES.NO <> ("Y") goto LASTSEEN
gosub RECLABS
find(B|PATIENT.NAME|EXIT|)
goto DAT_TEST
TEST_SEEN:
if DATE_SEEN > (SEEN) do
{
SEEN = (DATE_SEEN)
save(PATIENT|N|N)
find(M|PATIENT.NAME||)
}
if SEEN < (CHK_DATE) do
{
if SENT_FOR > (TO_DATE-365) goto NEXT_SEEN
gosub PRINT_SEEN
SENT_FOR = (SENT_DATE)
save(PATIENT|N|N)
find(M|PATIENT.NAME||)
}
NEXT_SEEN:
find(N|PATIENT|EXIT_PRINT|)
pmsg(RECORD.NUMBER|1|1|N|N|S|)
goto DAT_TEST
goto TEST_SEEN
PRINT_SEEN:
gosub SEXIST
gosub NEWX
CNTR = (CNTR+1)
ARRAY1[CNTR] = (Z30)
ARRAY2[CNTR] = (ADDRESS1)
ARRAY3[CNTR] = (AREA)
ARRAY4[CNTR] = ("")
ARRAY5[CNTR] = ("")
if CNTR = (3) gosub SEEN_PRINT
ret
SEEN_PRINT:
pfmt(1|||N|N|)
pblnk(1)
pfmt(2|||N|N|)
pblnk(1)
pfmt(3|||N|N|)
pblnk(3)
CNTR = (0)
gosub CL_ARRAY
ret
EXIT_PRINT:
gosub SEEN_PRINT
goto EXIT
DAT_TEST:
if DATE.OF.BIRTH < (DOB1) goto NEXT_SEEN
if DATE.OF.BIRTH > (DOB2) goto NEXT_SEEN
goto TEST_SEEN
\R RPLABELS
& & &
& & &
& & &
& & & & & &
&
&
&
&
PATIENT - RECALL REPORT- & CODE (& )
------------------------------------------------------------------------------------------
& & & (& )& & [&]
\
ARRAY1[1]
ARRAY1[2]
ARRAY1[3]
ARRAY2[1]
ARRAY2[2]
ARRAY2[3]
ARRAY3[1]
ARRAY3[2]
ARRAY3[3]
ARRAY4[1]
ARRAY5[1]
ARRAY4[2]
ARRAY5[2]
ARRAY4[3]
ARRAY5[3]
Z30
ADDRESS1
AREA
DATERP
TD
CTR
PATIENT.NAME
ADDRESS1
AREA
CODER
DATECOD
AMOUNTX
DOCTOR
\
\SSRECALLS
YOU MAY JUMP TO PRINT "NOT SEEN" LABELS
This will recall all recall code 1 except "HYS;VIR;MOV;REF;ETC"
RECALLS ╔══════════════════════════════
══════════╗ ║ ║
║ From Code: t t t t to Code: t t t t ║
║ ║
║ Recall code:[ t t] ║ ║
║ ║ Up to Date: t t t t t t t t
Labels?: t ║ ╚════════════════════════════════════════╝
F1 - Help "Printer on for labels" Esc - Exit
\
RECTYPE1 4 A 3112
RECTYPE2 4 A 4612
CTR 2 N 3314
CODEX1 8 S 3116
YES.NO 1 A 5716
\
\STNOTE
RECALLS - WHAT TO DO
====================
1. TO TAG ALL POTENTIAL RECALLS ANSWER RUN RECALLS AT RISK FROM MAIN MENU.
(THIS WILL TAG A GIVEN AGE GROUP WITH CODE <****>)
2. TO UPDATE THE <****> USE EASY SMEAR /IMMUNISATION UPDATE PROGRAM.
3. IF YOU ANSWER NO TO REPORT ONLY YOU WILL PRINT A LIST OF OUTSTANDING
RECALLS WITH OR WITHOUT LABELS.
6. PRINT OUT THESE AND SEND TO PATIENTS.
7. UPDATE RESULTS USING EASY RECALL MAINTENANCE
NOTE: THIS PROGRAM WILL ALWAYS PRINT OUT "ALL" OUTSTANDING RECALLS.
========================
\
\
\SSLABS
PRINTS LABELS FOR 3 YEAR RECALL REQUEST
ENTER FPC T
ARGET DATE: t t t t t t t t EG 01/04/91 CHECKS FROM : t t t t
t t t t t t t t t t t t t t
CONTINUE: t t t t t t t t t t t
REQUIRES 3 ABREAST LABELS IN PRINTER
\
TO_DATE 8 S 45 9
CHK_DATE 8 S 4510
DOB1 10 D 4511
YES.NO 1 A 4012
DOB2 10 D 4512
\